home *** CD-ROM | disk | FTP | other *** search
/ Aminet 30 / Aminet 30 (1999)(Schatztruhe)[!][Apr 1999].iso / Aminet / dev / cross / GBDK-2.0.lha / GBDK / lib / memcpy.s < prev    next >
Text File  |  1998-10-01  |  531b  |  45 lines

  1.     .include    "global.s"
  2.  
  3.     .area    _CODE
  4.  
  5.     ;; Copy memory zone
  6.     ;; 
  7.     ;; Entry conditions
  8.     ;;   BC = source
  9.     ;;   DE = length
  10.     ;;   HL = destination
  11.     ;; 
  12.     ;; Register used: AF, BC, DE, HL
  13. .memcpy::
  14. 1$:
  15.     LD    A,(BC)
  16.     LD    (HL+),A
  17.     INC    BC
  18.     DEC    DE
  19.     LD    A,D
  20.     OR    E
  21.     JR    NZ,1$
  22.     RET
  23.  
  24. _memcpy::
  25.     PUSH    BC
  26.  
  27.     LDA    HL,9(SP)    ; Skip return address and registers
  28.     LD    D,(HL)        ; DE = n
  29.     DEC    HL
  30.     LD    E,(HL)
  31.     DEC    HL
  32.     LD    B,(HL)        ; BC = s2
  33.     DEC    HL
  34.     LD    C,(HL)
  35.     DEC    HL
  36.     LD    A,(HL-)        ; HL = s1
  37.     LD    L,(HL)
  38.     LD    H,A
  39.     PUSH    HL
  40.     CALL    .memcpy
  41.     POP    DE        ; Return s1
  42.  
  43.     POP    BC
  44.     RET
  45.